$(function () {
  // 1-首页数据渲染 
  // ajax + 模板引擎  

  var currentPage = 1; // 记录当前页 
  var pageSize = 5; // 每页的数据条数

  function render () {
    $.ajax({
      type: 'get',
      url: '/category/querySecondCategoryPaging',
      data: {
        page: currentPage,
        pageSize: pageSize
      },
      dataType: 'json',
      success: function (res) {
        console.log(res);
        $('tbody').html(template('tmp', res));
        // 根据后台返回的总数 生成分页按钮 
        setPage(res.total);
      }
    })
  }

  render();

  // 2- 分页 
  // 1- 获取数据的总数 
  // 2- 使用插件 生成分页按钮
  // 根据总数total 生成分页按钮  
  function setPage (total) {
    $("#paginator").bootstrapPaginator({
      bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
      currentPage: currentPage,// 默认高亮分页按钮
      totalPages: Math.ceil(total / pageSize), // 生成分页按钮的个数     
      onPageClicked: function (event, originalEvent, type, page) {
        //为按钮绑定点击事件 page:当前点击的按钮值
        // 改变当前页取值 
        currentPage = page;
        // 重新渲染
        render();
      }
    });
  }

  // 3- 下拉列表数据填充
  // ajax 取数据  + 模板引擎渲染 
  // 获取一级分类的数据 
  $.ajax({
    type: 'get',
    url: '/category/queryTopCategoryPaging',
    data: {
      page: 1,
      pageSize: 100 // 获取全部数据  
    },
    dataType: 'json',
    success: function (res) {
      console.log(res);
      $('.cate-one-list').html(template('tmp-one', res)); //渲染
      console.log(res);
    }
  })

  // 4- 下拉列表选中
  // 1- 点击a标签，获取a标签的文字， 赋值给按钮 
  // 2- 获取a标签的data-id ,赋值给隐藏域  ，将来会提交给后台
  $('.cate-one-list').on('click', 'a', function () {
    $('.btn-title').text($(this).text());
    $('#categoryId').val($(this).data('id'));
    // 1- 在下拉列表选中后，将下拉列表状态恢复为成功
    $('.add-form').data('bootstrapValidator').updateStatus('categoryId', 'VALID');
  })

  // 5- 文件上传
  $("#file").fileupload({
    // 文件服务器返回的数据 以json格式进行处理 
    dataType: "json",
    //e：事件对象
    //data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
    // done 在文件服务器 返回图片地址是执行 相当于success 
    done: function (e, data) {
      console.log(data.result.picAddr);
      var url = data.result.picAddr;
      // 图片预览 
      $('#img').attr('src', url);
      // 保存图片的地址 到隐藏域 
      $('#brandLogo').val(url);
      // 在图片预览完成后，将图片状态恢复为成功
      $('.add-form').data('bootstrapValidator').updateStatus('brandLogo', 'VALID');
    }
  });

  // 6- 表单非空校验 
  //使用表单校验插件
  $('.add-form').bootstrapValidator({
    //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
    excluded: [':disabled'],

    //2. 指定校验时的图标显示，默认是bootstrap风格
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },

    //3. 指定校验字段
    fields: {
      //校验用户名，对应name表单的name属性
      categoryId: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请选择一级分类'
          }
        }
      },
      brandName: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入二级分类'
          }
        }
      },
      brandLogo: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请上传图片'
          }
        }
      }
    }

  });

  // 7- 收到回复图片和下拉列表校验状态 
  // 1- 在下拉列表选中后，将下拉列表状态恢复为成功
  // 2- 在图片预览完成后，将图片状态恢复为成功

  // 8- 添加二级分类 
  // 1 - 点击按钮，获取表单数据，在表单数据合理清空下，方式数据给后台，进行添加
  // 2- 添加完成后， 页面重新渲染，隐藏模态框，表单重置 
  $('.add-form').on('success.form.bv', function (e) {
    e.preventDefault(); //阻止提交按钮的默认行为  
    // ajax 进行添加
    $.ajax({
      type: 'post',
      url: '/category/addSecondCategory',
      data: $('.add-form').serialize(),
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 页面重新渲染
        render();
        // 隐藏模态框
        $('.modal-add').modal('hide');
        // 表单重置  重置表单的数据和样式
        $('.add-form').data('bootstrapValidator').resetForm(true);
        // 手动重置 图片和 按钮样式 
        $('.btn-title').text('请选择一级分类');
        $('#img')[0].src = './images/none.png';
      }
    })
  })

})